home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu005.dms / pu005.adf / Morse Code / morse-0308 (.txt) < prev    next >
AmigaBASIC Source Code  |  1988-01-19  |  12KB  |  518 lines

  1. REM MORSE CODE GENERATOR PROGRAM
  2.  
  3. CLEAR, 30000
  4. RANDOMIZE TIMER
  5. SCREEN 1,640,200,4,2
  6. WINDOW 2,"MORSE-CODE",(0,0)-(631,186),0,1
  7.  
  8. PALETTE 0,0,0,0       'BLACK
  9. PALETTE 1,0.93,0.2,0    'FIRE ENGINE RED
  10. PALETTE 2,0.4,0.6,1     'DARK BLUE
  11. PALETTE 3,0.73,0.73,0.73 'GRAY
  12. PALETTE 4,1,1,0.13     'YELLOW
  13. PALETTE 5,0.33,0.87,0   'GREEN
  14. PALETTE 6,1,1,1       'WHITE
  15. PALETTE 7,0.8,0.6,0.53   'BROWN
  16. PALETTE 8,0.4,0.6,1
  17. WIDTH 80
  18. COLOR 0,2
  19. CLS
  20. WINDOW OUTPUT 2
  21.  
  22. Z=199
  23. FOR Y=Z TO 1 STEP -2:X=320
  24. LINE (X,Z)-(1,Y)
  25. NEXT
  26. Z=320
  27. FOR X=0 TO 639 STEP 2
  28. LINE (X,0)-(Z,199)
  29. NEXT
  30. Z=199
  31. FOR Y=0 TO Z STEP 2:X=320
  32. LINE (X,Z)-(640,Y)
  33. NEXT
  34.  
  35. DIM N1(50),CW$(50),DUR(50,6)
  36.  
  37. FOR I=1 TO 45
  38. READ N1(I),CW$(I)
  39. FOR J=1 TO N1(I)
  40. READ DUR(I,J)
  41. NEXT J:NEXT I
  42.  
  43. LEFT=160:RIGHT=470
  44. FOR X=100 TO 15 STEP -1
  45. LINE (LEFT,X)-(RIGHT,X),0
  46. LEFT=LEFT-2:RIGHT=RIGHT+2
  47. NEXT
  48. COLOR 1,0
  49.  
  50. P=800          'INITIAL PITCH VALUE
  51. WPM=7          'INITIAL WORDS/MINUTE
  52. DOT=(14.7/WPM) 'CALCULATE SPEED, DOT TIME
  53. DASH=DOT*3     'DASH TIME
  54. VOL=255        'INITIAL VOLUME
  55.  
  56. DEF FNRATIO (A,B,C) = (A-B)/(C-2)
  57. DEF FNVALUE (A,B,C,D) = ((A-B+1)/C)+D-1
  58.  
  59. PBW=600  'PITCH BAR WIDTH
  60. PBH=14   'PITCH BAR HEIGHT
  61. PBSX=14  'PITCH BAR START X VALUE
  62. PBSY=21  'PITCH BAR START Y VALUE
  63. PSR=399  'PITCH START RANGE
  64. PER=1200 'PITCH END RANGE
  65. PBR=FNRATIO(PER,PSR,PBW)
  66. PBI=FNVALUE(800,PSR,PBR,PBSX)
  67.  
  68. SBW=400  'SPEED BAR WIDTH
  69. SBH=14   'SPEED BAR HEIGHT
  70. SBSX=114 'SPEED BAR START X VALUE
  71. SBSY=21  'SPEED BAR START Y VALUE
  72. SSR=2    'SPEED START RANGE
  73. SER=18   'SPEED END RANGE
  74. SBR=FNRATIO(SER,SSR,SBW) 
  75. SBI=FNVALUE(7,SSR,SBR,SBSX)    
  76.  
  77. VBW=600  'VOLUME BAR WIDTH
  78. VBH=14   'VOLUME BAR HEIGHT
  79. VBSX=14  'VOLUME BAR START X VALUE
  80. VBSY=21  'VOLUME BAR START Y VALUE
  81. VSR=1    'VOLUME START RANGE
  82. VER=256  'VOLUME END RANGE
  83. VBR=FNRATIO(VER,VSR,VBW) 
  84. VBI=FNVALUE(255,VSR,VBR,VBSX)    
  85.  
  86. CALL CENTERSTRING(3,"M O R S E ")   
  87. CALL CENTERSTRING(4,"C O D E")
  88. CALL CENTERSTRING(5,"G E N E R A T O R") 
  89. CALL CENTERSTRING(7,"SELECT FUNCTION FROM PULLDOWN MENU")
  90. CALL CENTERSTRING(8,"USING RIGHT MOUSE BUTTON")
  91. CALL CENTERSTRING(11,"YOU MAY ALSO SELECT WHICH CHARACTERS YOU WISH TO ")
  92. CALL CENTERSTRING(12,"PRACTICE WITH FOR THE 'RANDOM RECEIVING PRACTICE' ")
  93. CALL CENTERSTRING(13,"AND THE 'RECEIVING QUIZ' FUNCTIONS...")
  94. CALL CENTERSTRING(15,"AND/OR ADJUST CONTROLS TO YOUR LIKING")
  95.  
  96. MENU 1,0,1,"FUNCTION"
  97. MENU 1,1,1,"  RANDOM RECEIVING PRACTICE"
  98. MENU 1,2,1,"  RECEIVING QUIZ           "
  99. MENU 1,3,1,"  KEYBOARD SENDING         "
  100. MENU 1,4,1,"  SOUND A TEXT FILE        "
  101. MENU 1,5,1,"  QUIT                     "
  102.  
  103. MENU 2,0,1,"CHARACTER USAGE"
  104. MENU 2,1,1,"  All ALPHA, NUM and SPECIAL"
  105. MENU 2,2,1,"  All ALPHABETIC       "
  106. MENU 2,3,1,"  All NUMERIC          "
  107. MENU 2,4,1,"  NUM 1 THRU 5         "
  108. MENU 2,5,1,"  NUM 6 THRU 0         "
  109. MENU 2,6,1,"  All SPECIAL          "
  110. MENU 2,7,1,"  A,E,I,M,N,T ONLY     "
  111. MENU 2,8,1,"  D,G,K,O,R   ONLY     "
  112. MENU 2,9,1,"  B,S,U,W     ONLY     "
  113. MENU 2,10,1,"  C,F,H,J     ONLY     "
  114. MENU 2,11,1,"  L,P,Q,V     ONLY     "
  115. MENU 2,12,1,"  X,Y,Z       ONLY     "
  116.  
  117. MENU 3,0,1,"CONTROLS"
  118. MENU 3,1,1,"  CHANGE PITCH (800HZ)      "
  119. MENU 3,2,1,"  CHANGE SPEED (7 WORDS/MIN)"
  120. MENU 3,3,1,"  CHANGE VOLUME (255)       "
  121.  
  122. MENU 4,0,1,"" 'TURN OFF BASIC MENU 4
  123.  
  124. MENU ON
  125.  
  126. FUNCT2=2:OLDFUNC2=2 'INDICATE DEFAULT CHARACTER USAGE
  127. GOSUB CHAR
  128.  
  129. MLOOP:
  130. ON MENU GOSUB START
  131. FOR X=1 TO 5:AN$=INKEY$:NEXT X
  132. B=MOUSE(0)
  133. SLEEP
  134. GOTO MLOOP
  135.  
  136. START:
  137. SELMENU = MENU(0)
  138. ON SELMENU GOSUB 100,200,300
  139. OLDMENU = SELMENU
  140. RETURN
  141.  
  142. 100 :
  143. CLS
  144. FUNCT=MENU(1)
  145. COLOR 3,0
  146. CLS
  147. ON FUNCT GOSUB RCV,TEST,KEYBD,FILEKEY,BYE
  148. OLDFUNC=FUNCT
  149. RETURN
  150.  
  151. 200 :
  152. COLOR 3,0
  153. CLS
  154. FUNCT2=MENU(1)
  155. GOSUB CHAR
  156. OLDFUNC2=FUNCT2
  157. RETURN
  158.  
  159. 300 :
  160. COLOR 3,0
  161. CLS
  162. FUNCT3=MENU(1)
  163. ON FUNCT3 GOSUB DOMOUSE,DOMOUSE,DOMOUSE
  164. OLDFUNC3=FUNCT3
  165. RETURN
  166.  
  167.  
  168. DOMOUSE:
  169. MENU OFF
  170. CLS
  171. B=MOUSE(0)
  172. IF FUNCT3=1 THEN GOSUB PITCHBAR
  173. IF FUNCT3=2 THEN GOSUB SPEEDBAR
  174. IF FUNCT3=3 THEN GOSUB VOLBAR
  175. CHKMOUSE:
  176. GOSUB MOUSER
  177. IF B=0 THEN GOTO CHKMOUSE
  178. IF FUNCT3=1 THEN LOCATE ((PBSY+PBH-1)/7)+2,1:PRINT"PITCH RESET/CHANGED":BEEP
  179. IF FUNCT3=2 THEN LOCATE ((SBSY+SBH-1)/7)+2,1:PRINT"SPEED RESET/CHANGED":BEEP
  180. IF FUNCT3=3 THEN LOCATE ((VBSY+VBH-1)/7)+2,1:PRINT"VOLUME RESET/CHANGED":BEEP
  181. B=MOUSE(0)
  182. MENU ON
  183. RETURN
  184.  
  185. MOUSER:
  186. B=MOUSE(0):X=MOUSE(1):Y=MOUSE(2)
  187. IF FUNCT3=1 AND B<>0 AND X>PBSX AND X<PBSX+PBW AND Y>PBSY AND Y<PBSY+PBH THEN GOSUB PITCHCTRL
  188. IF FUNCT3=2 AND B<>0 AND X>SBSX AND X<SBSX+SBW AND Y>SBSY AND Y<SBSY+SBH THEN GOSUB SPEEDCTRL
  189. IF FUNCT3=3 AND B<>0 AND X>VBSX AND X<VBSX+VBW AND Y>VBSY AND Y<VBSY+VBH THEN GOSUB VOLCTRL
  190. RETURN
  191.  
  192. PITCHBAR:
  193. LINE(PBSX,PBSY)-(PBSX+PBW-1,PBSY+PBH-1),1,B
  194. LOCATE ((PBSY+PBH-1)/7)+1,1
  195. PRINT "PITCH BAR"
  196. B=1:X=PBI:Y=PBSY+PBH-2:GOSUB PITCHCTRL
  197. RETURN
  198.  
  199. SPEEDBAR:
  200. LINE(SBSX,SBSY)-(SBSX+SBW-1,SBSY+SBH-1),1,B
  201. LOCATE ((SBSY+SBH-1)/7)+1,1
  202. PRINT "SPEED BAR"
  203. B=1:X=SBI:Y=SBSY+SBH-2:GOSUB SPEEDCTRL
  204. RETURN
  205.  
  206. VOLBAR:
  207. LINE(VBSX,VBSY)-(VBSX+VBW-1,VBSY+VBH-1),1,B
  208. LOCATE ((VBSY+VBH-1)/7)+1,1
  209. PRINT "VOLUME BAR"
  210. B=1:X=VBI:Y=VBSY+VBH-2:GOSUB VOLCTRL
  211. RETURN
  212.  
  213. PITCHCTRL:
  214. WHILE B<>0 AND X>PBSX AND X<PBSX+PBW-1 AND Y>PBSY AND Y<PBSY+PBH-1
  215.   LINE (PBSX+1,PBSY+1)-(PBSX+PBW-2,PBSY+PBH-2),0,BF
  216.   LINE (PBSX+1,PBSY+1)-(X,PBSY+PBH-2),3,BF
  217.   P=(X-PBSX+1)*PBR+PSR-1
  218.   LOCATE ((PBSY+PBH-1)/7)+1,11
  219.   PRINT USING">####HZ";P
  220.   PBI=X
  221.   B=MOUSE(0):X=MOUSE(1):Y=MOUSE(2)
  222. WEND
  223. RETURN
  224.  
  225. SPEEDCTRL:
  226. WHILE B<>0 AND X>SBSX AND X<SBSX+SBW-1 AND Y>SBSY AND Y<SBSY+SBH-1
  227.   LINE (SBSX+1,SBSY+1)-(SBSX+SBW-2,SBSY+SBH-2),0,BF
  228.   LINE (SBSX+1,SBSY+1)-(X,SBSY+SBH-2),3,BF
  229.   WPM=(X-SBSX+1)*SBR+SSR-1
  230.   LOCATE ((SBSY+SBH-1)/7)+1,11
  231.   PRINT USING">## WORDS/MIN";WPM
  232.   SBI=X
  233.   B=MOUSE(0):X=MOUSE(1):Y=MOUSE(2)
  234. WEND
  235. DOT=(14.7/WPM) 'CALCULATE SPEED, DOT TIME
  236. DASH=DOT*3
  237. RETURN
  238.  
  239. VOLCTRL:
  240. WHILE B<>0 AND X>VBSX AND X<VBSX+VBW-1 AND Y>VBSY AND Y<VBSY+VBH-1
  241.   LINE (VBSX+1,VBSY+1)-(VBSX+VBW-2,VBSY+VBH-2),0,BF
  242.   LINE (VBSX+1,VBSY+1)-(X,VBSY+VBH-2),3,BF
  243.   VOL=(X-VBSX+1)*VBR+VSR-1
  244.   LOCATE ((VBSY+VBH-1)/7)+1,12
  245.   PRINT USING">### VOLUME LEVEL";VOL
  246.   VBI=X
  247.   B=MOUSE(0):X=MOUSE(1):Y=MOUSE(2)
  248. WEND
  249. RETURN
  250.  
  251. CHAR:
  252. MENU 2,OLDFUNC2,1
  253. MENU 2,FUNCT2,2
  254. MENU OFF
  255. IF FUNCT2=1 THEN SW=1:SX=44:NR=44
  256. IF FUNCT2=2 THEN SW=1:SX=26:NR=26
  257. IF FUNCT2=3 THEN SW=27:SX=36:NR=10
  258. IF FUNCT2=4 THEN SW=27:SX=31:NR=5
  259. IF FUNCT2=5 THEN SW=32:SX=36:NR=5
  260. IF FUNCT2=6 THEN SW=37:SX=44:NR=8
  261. IF FUNCT2=7 THEN SW=1:SX=6:NR=6
  262. IF FUNCT2=8 THEN SW=7:SX=11:NR=5
  263. IF FUNCT2=9 THEN SW=12:SX=15:NR=4
  264. IF FUNCT2=10 THEN SW=16:SX=19:NR=4
  265. IF FUNCT2=11 THEN SW=20:SX=23:NR=4
  266. IF FUNCT2=12 THEN SW=24:SX=26:NR=3
  267. IF SELMENU = 2 THEN
  268.   PRINT:PRINT "CHARACTER SELECTION COMPLETED. SELECT NEW FUNCTION."
  269. END IF
  270. BEEP
  271. MENU ON
  272. RETURN
  273.  
  274. KEYBD:
  275. MENU 1,OLDFUNC,1
  276. MENU 1,3,2
  277. MENU OFF
  278. PRINT :PRINT "START TYPING. CLICK LEFT MOUSE BUTTON TO END."
  279. GETAKEY:
  280. C$=INKEY$
  281. B=MOUSE(0)
  282. IF B=1 THEN BEEP:GOTO EXKEYBD  
  283. IF C$="" THEN GOTO GETAKEY
  284. C$=UCASE$(C$)
  285. SOUND P,DASH,0 'WAIT ONE DOT LENGHT.
  286. C=ASC(C$)
  287. IF C=27 THEN GOTO EXKEYBD
  288. FOR I=1 TO 45
  289.   IF CW$(I) = C$ THEN 
  290.     C=I
  291.     I=45
  292.   ELSE
  293.     C=45
  294.   END IF
  295. NEXT I
  296. GOSUB SOUNDIT
  297. PRINT CW$(C);
  298. GOTO GETAKEY
  299. EXKEYBD:
  300. CLS
  301. PRINT:PRINT"FUNCTION ENDED. SELECT NEW FUNCTION"
  302. MENU ON
  303. RETURN
  304.  
  305. RCV:
  306. MENU 1,OLDFUNC,1
  307. MENU 1,1,2
  308. MENU OFF
  309. PRINT:PRINT"CLICK LEFT MOUSE BUTTON TO END."
  310. I=0
  311. ENDX=14/WPM*1400
  312. RAND:
  313. C=(INT(RND*NR))+SW
  314. GOSUB SOUNDIT
  315. I=I+1:PRINT "- ";CW$(C);" - ";
  316. FOR X=1 TO ENDX:NEXT X
  317. IF I=5 THEN PRINT" ":I=0
  318. SOUND P,DASH,0 'WAIT ONE DOT LENGHT.
  319. IF I=0 THEN SOUND P,(DASH*2.4),0
  320. IF I<>0 THEN GOTO RCV2
  321. FOR X=1 TO ENDX:NEXT X
  322. RCV2:
  323. B=MOUSE(0)
  324. IF B=1 THEN BEEP:GOTO EXRCV 
  325. AN$=INKEY$
  326. IF AN$="" THEN GOTO RAND 
  327. AN=ASC(AN$)
  328. IF AN=27 THEN GOTO EXRCV 
  329. GOTO RAND
  330. EXRCV:
  331. CLS
  332. PRINT:PRINT"FUNCTION ENDED. SELECT NEW FUNCTION"
  333. MENU ON
  334. RETURN
  335.  
  336. TEST:
  337. THREE=1
  338. POSITION=1
  339. TOTAL=0
  340. WRONG=0
  341. MENU 1,OLDFUNC,1
  342. MENU 1,2,2 
  343. MENU OFF
  344. PRINT :PRINT "YOU GET THREE TRIES TO GUESS CORRECTLY!"
  345. PRINT :PRINT "CLICK LEFT MOUSE BUTTON TO END."
  346. PICKIT:
  347. C=(INT(RND*NR))+SW
  348. SEND:
  349. GOSUB SCOREIT
  350. TOTAL=TOTAL+1
  351. GOSUB SOUNDIT
  352. LOCATE 15,1
  353. PRINT USING "ATTEMPT - # - ";THREE
  354. ANSWER:
  355. AN$=UCASE$(INKEY$)
  356. B=MOUSE(0)
  357. IF B=1 THEN BEEP:GOTO EXTEST 
  358. IF AN$="" THEN GOTO ANSWER
  359. AN=ASC(AN$)
  360. IF AN=27 THEN GOTO EXTEST
  361. LOCATE 12,POSITION:PRINT AN$;
  362. IF POSITION=77 THEN 
  363.   LOCATE 12,1
  364.   PRINT"                                                                             "
  365.   POSITION=1
  366. END IF 
  367. IF AN$<>CW$(C) THEN
  368.   WRONG=WRONG+1
  369.   LOCATE 17,1
  370.   PRINT"                     ";
  371.   THREE=THREE+1
  372.   IF THREE<4 THEN  GOTO SEND
  373. END IF
  374. THREE=1
  375. IF AN$=CW$(C) THEN 
  376.   POSITION=POSITION+1
  377.   LOCATE 17,1
  378.   PRINT"LAST ONE WAS CORRECT";
  379. END IF
  380. GOTO PICKIT
  381. EXTEST:
  382. CLS
  383. PRINT:PRINT"FUNCTION ENDED. SELECT NEW FUNCTION"
  384. MENU ON
  385. RETURN
  386.  
  387. SCOREIT:
  388. IF TOTAL<>0 THEN
  389.   LOCATE 23,1:PRINT"SCORE = ";
  390.   PRINT USING "###.##";((100*((TOTAL-WRONG)/TOTAL)));
  391.   PRINT USING "     TOTAL TRIES = ###";TOTAL;
  392. END IF
  393. RETURN
  394.  
  395. SOUNDIT:
  396. FOR J=1 TO N1(C)
  397. IF DUR(C,J) = 1 THEN SOUND P,DOT,VOL
  398. IF DUR(C,J) = 3 THEN SOUND P,DASH,VOL
  399. IF DUR(C,J) = 0 THEN SOUND P,DASH,0
  400. SOUND P,DOT,0
  401. NEXT J
  402. RETURN
  403.  
  404. FILEKEY:
  405. MENU 1,OLDFUNC,1
  406. MENU 1,4,2
  407. MENU OFF
  408. PRINT :PRINT "SOUND TEXT FILE. CLICK LEFT MOUSE BUTTON AND/OR PRESS RETURN TO END."
  409. PRINT
  410. ON ERROR GOTO NTFND
  411. GOTO ASKFILE
  412. NTFND:
  413. RESUME ERRED
  414. ERRED:
  415. WINDOW 3,,(70,50)-(560,150),0,1
  416. WINDOW OUTPUT 3
  417. LOCATE 7,19
  418. PRINT "FILE ERROR - TRY AGAIN"
  419. PRINT
  420. LOCATE 9,22
  421. PRINT "PRESS ANY KEY..."
  422. CHKKEY:
  423. IF INKEY$<>"" THEN GOTO WINCLO
  424. GOTO CHKKEY
  425. WINCLO:
  426. WINDOW 2
  427. WINDOW CLOSE 3
  428. ASKFILE:
  429. INPUT "ENTER 'DRIVE:FILE NAME' ";INFYLE$
  430. B=MOUSE(0)
  431. IF B=1 THEN GOTO EXFILEKEY
  432. IF INFYLE$ = "" THEN GOTO EXFILEKEY
  433. OPEN INFYLE$ FOR INPUT AS #1
  434. INPUT "DISPLAY ALSO (Y OR N) ";E$
  435. ENDY=14/WPM*1400
  436. WHILE NOT EOF(1)
  437. LINE INPUT #1,A$
  438. D$=A$
  439. FOR X=1 TO LEN(A$)
  440. B=MOUSE(0)
  441. IF B=1 THEN GOTO EXFILEKEY  
  442. B$=INKEY$
  443. C$=LEFT$(D$,1)
  444. C$=UCASE$(C$)
  445. SOUND P,DASH,0 'WAIT ONE DOT LENGHT.
  446. D$=MID$(D$,2)
  447. IF B$<>"" THEN B=ASC(B$)
  448. IF B=27 THEN GOTO EXFILEKEY
  449. FOR I=1 TO 45
  450.   IF CW$(I) = C$ THEN 
  451.     C=I
  452.     I=45
  453.   ELSE
  454.     C=45
  455.   END IF
  456. NEXT I
  457. GOSUB SOUNDIT
  458. IF UCASE$(E$)="Y" THEN PRINT CW$(C);
  459. FOR Y=1 TO ENDY:NEXT Y
  460. NEXT X
  461. IF UCASE$(E$)="Y" THEN PRINT " "
  462. WEND
  463. EXFILEKEY:
  464. FOR X=1 TO 3000:NEXT X
  465. CLS
  466. CLOSE #1
  467. PRINT:PRINT"FUNCTION ENDED. SELECT NEW FUNCTION"
  468. BEEP
  469. MENU ON
  470. RETURN
  471.  
  472. BYE:
  473. WINDOW 3,,(70,50)-(560,150),0,1
  474. WINDOW OUTPUT 3
  475. LOCATE 7,19
  476. INPUT"EXIT BASIC (Y/N)";FIN$
  477. IF UCASE$(FIN$) = "Y" THEN GOTO ENDBYE
  478. WINDOW 2
  479. WINDOW CLOSE 3
  480. X=0:Y=186
  481. SQUEEZE:
  482. LINE (0,X+1)-(631,Y-1),1,B
  483. LINE (0,X)-(631,Y),3,B
  484. X=X+1:Y=Y-1
  485. IF X=Y THEN LINE (X,50)-(Y,50),3 :ELSE GOTO SQUEEZE
  486. ENDBYE:
  487. WINDOW 1
  488. BEEP
  489. WINDOW CLOSE 2
  490. SCREEN CLOSE 1
  491. MENU RESET
  492. IF UCASE$(FIN$)<>"Y" THEN END
  493. WINDOW CLOSE 3
  494. SYSTEM
  495.  
  496. SUB CENTERSTRING(ROW%,LIT$) STATIC
  497.   LOCATE ROW%,40-(LEN(LIT$)/2)
  498.   PRINT LIT$;
  499. END SUB
  500.  
  501. DATA 1,E,1,2,I,1,1,1,T,3,2,M,3,3,2,A,1,3,2,N,3,1
  502. DATA 3,D,3,1,1,3,G,3,3,1,3,K,3,1,3,3,O,3,3,3,3,R,1,3,1
  503. DATA 3,S,1,1,1,3,U,1,1,3,3,W,1,3,3,4,B,3,1,1,1
  504. DATA 4,C,3,1,3,1,4,F,1,1,3,1,4,H,1,1,1,1,4,J,1,3,3,3
  505. DATA 4,L,1,3,1,1,4,P,1,3,3,1,4,Q,3,3,1,3,4,V,1,1,1,3
  506. DATA 4,X,3,1,1,3,4,Y,3,1,3,3,4,Z,3,3,1,1,5,1,1,3,3,3,3
  507. DATA 5,2,1,1,3,3,3,5,3,1,1,1,3,3,5,4,1,1,1,1,3
  508. DATA 5,5,1,1,1,1,1,5,6,3,1,1,1,1,5,7,3,3,1,1,1
  509. DATA 5,8,3,3,3,1,1,5,9,3,3,3,3,1,5,0,3,3,3,3,3
  510. DATA 6,".",1,3,1,3,1,3,6,",",3,3,1,1,3,3
  511. DATA 6,"?",1,1,3,3,1,1,5,"/",3,1,1,3,1
  512. DATA 6,"<",1,1,1,1,1,1,5,"-",3,1,1,1,3
  513. DATA 6,":",3,3,3,1,1,1,6,";",3,1,3,1,3,1,1," ",0
  514. END
  515.  
  516.   
  517.  
  518.